package main

import "fmt"

/*
*
定向通道

	单向：定向
	chan <- T，只支持写
	<- chan T, 只读
*/
func main() {
	ch1 := make(chan int)   // 双向，支持读和写
	ch2 := make(chan<- int) // 单向，只能写，不能读
	ch3 := make(<-chan int) // 单向， 只能读，不能写
	fun1(ch1)
	fun1(ch2)
	//fun1(ch3) //会出问题，因为ch3是一个只能读的通达

	fun2(ch3)
}

// 该函数，只能操作只写的通道
func fun1(ch chan<- int) {
	// 在函数内部，对于ch通道，只能写数据，不能读取数据
	ch <- 100
	fmt.Println("fun1 function over...")
}

// 该函数，只能操作只读通道
func fun2(ch <-chan int) {
	data := <-ch
	fmt.Println(data)
}
